package ar.com.gals.domain;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinTable;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

@Entity
@SequenceGenerator(
	name = "gals_id_sequence", 
	sequenceName = "rol_id_seq", 
	allocationSize = 1
)
@Table(name="rol")
public class Rol extends Gals {

	@Column(name="nombre", nullable = false)
	private String nombre;
	
	@Column(name="descripcion", nullable = false)
	private String descripcion;
	
	@ManyToMany(fetch = FetchType.EAGER)
	@JoinTable(
		name = "rol_permiso", 
		joinColumns = { 
			@JoinColumn(name = "rol_id", referencedColumnName = "id", nullable = false, updatable = false) 
		}, 
		inverseJoinColumns = { 
			@JoinColumn(name = "permiso_id", referencedColumnName = "id", nullable = false, updatable = false) 
		}
	)
	private Set<Permiso> permisos = new HashSet<Permiso>();
	
	
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public String getDescripcion() {
		return descripcion;
	}
	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}
	public Set<Permiso> getPermisos() {
		return permisos;
	}
	public void setPermisos(Set<Permiso> permisos) {
		this.permisos = permisos;
	}
	

	public boolean isAdministrador() {
		return "ADMIN".equals(this.nombre);
	}
	public boolean isNegocio() {
		return "NEGOC".equals(this.nombre);
	}
	public boolean isEmpleado() {
		return "EMPLE".equals(this.nombre);
	}
}
